package main

import (
	"fmt"
)

func main() {
	fmt.Println("字符串相关使用")
	//1、字符串的遍历
	echo("1、字符串的遍历")
	var str = "hello world"
	for i, chr := range str {
		//遍历后，chr结果成了  byte
		fmt.Println(i, chr, string(chr))
	}

	//2、中文字符串的遍历
	echo("2、中文字符串的遍历")
	str = "您好"
	for i, chr := range str {
		//遍历后，chr结果成了  byte
		fmt.Println(i, chr, string(chr))
	}
	//3、使用for循环
	echo("3、使用for循环")
	str = "hello world"
	n := len(str)
	for i := 0; i < n; i++ {
		fmt.Println(str[i])
	}

	//4、转换为rune输出
	echo("4、转换为rune输出")
	//golang中字符类型的实际数据类型为uint32,以for循环遍历的方式输出结果都是Unicode编码的
	str = "苏苏苏苏"
	array := []rune(str)
	n = len(array)
	for i := 0; i < n; i++ {
		ch := array[i]     // 依据下标取字符串中的字符，类型为byte
		fmt.Println(i, ch) //unicode 编码转十进制输出
	}
	//5、没有char类型
	echo("5、没有char类型")
	// 声明字符类型
	var ch byte
	ch = 97
	fmt.Printf("ch=%c\n", ch)

	// 2、自动推导
	ch1 := 'c'
	fmt.Printf("ch1 type is %T,ch1=%c,ch1=%d\n", ch1, ch1, ch1)
	// 4、字符与字符串的区别
	// 字符用单引号，除了转义字符除外
	// 字符串用双引号

}

func echo(tip string) {
	fmt.Println("#################", tip, "#################")
}
